package com.atguigu.eduservice.entity;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 讲师
 * </p>
 *
 * @author testjava
 * @since 2021-08-05
 */

/**
 * 【@TableName 】
 *     @TableName 用于定义表名
 * 注：
 *     常用属性：
 *         value                用于定义表名
 *
 * 【@TableId】
 *     @TableId 用于定义表的主键
 * 注：
 *     常用属性：
 *         value           用于定义主键字段名
 *         type            用于定义主键类型（主键策略 IdType）
 *
 *    主键策略：
 *       IdType.AUTO          主键自增，系统分配，不需要手动输入
 *       IdType.NONE          未设置主键
 *       IdType.INPUT         需要自己输入 主键值。
 *       IdType.ASSIGN_ID     系统分配 ID，用于数值型数据（Long，对应 mysql 中 BIGINT 类型）。
 *       IdType.ASSIGN_UUID   系统分配 UUID，用于字符串型数据（String，对应 mysql 中 varchar(32) 类型）。
 *
 * 【@TableField】
 *     @TableField 用于定义表的非主键字段。
 * 注：
 *     常用属性：
 *         value                用于定义非主键字段名
 *         exist                用于指明是否为数据表的字段， true 表示是，false 为不是。
 *         fill                 用于指定字段填充策略（FieldFill）。
 *
 *     字段填充策略：（一般用于填充 创建时间、修改时间等字段）
 *         FieldFill.DEFAULT         默认不填充
 *         FieldFill.INSERT          插入时填充
 *         FieldFill.UPDATE          更新时填充
 *         FieldFill.INSERT_UPDATE   插入、更新时填充。
 *
 * 【@TableLogic】
 *     @TableLogic 用于定义表的字段进行逻辑删除（非物理删除）
 * 注：
 *     常用属性：
 *         value            用于定义未删除时字段的值
 *         delval           用于定义删除时字段的值
 *
 * 【@Version】
 *     @Version 用于字段实现乐观锁*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="EduTeacher对象", description="讲师")
public class EduTeacher implements Serializable {


    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "讲师ID")
    @TableId(value = "id", type = IdType.ID_WORKER_STR)
    private String id;

    @ApiModelProperty(value = "讲师姓名")
    private String name;

    @ApiModelProperty(value = "讲师简介")
    private String intro;

    @ApiModelProperty(value = "讲师资历,一句话说明讲师")
    private String career;

    @ApiModelProperty(value = "头衔 1高级讲师 2首席讲师")
    private Integer level;

    @ApiModelProperty(value = "讲师头像")
    private String avatar;

    @ApiModelProperty(value = "排序")
    private Integer sort;

    @TableLogic/*用于定义表的字段进行逻辑删除（非物理删除）*/
    @ApiModelProperty(value = "逻辑删除 1（true）已删除， 0（false）未删除")
    private Integer isDeleted;

    @ApiModelProperty(value = "创建时间")
    //mybatais,tablefield
    @TableField(fill = FieldFill.INSERT)
    private Date gmtCreate;



    @ApiModelProperty(value = "更新时间")
    //mybatais,tablefield
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date gmtModified;


}